
***************************************************************************************************************************
******************                       This is the dofile to replicate                                 ******************
****************** "The Relevance of Culture: Collectivism Reduces Negativity Biases in Political Trust" ******************
******************                       Author: Baowen Liang, June 25th 2025                            ******************
***************************************************************************************************************************

cd "customize your working directory"

*********************************************************************************
****************************** Study 1: WVS *************************************
*********************************************************************************

use "WVS_data", clear


****************************** Splined IV: Egotropic Economic Perception ******************************

mkspline finance_neg 5.5 finance_pos = finance
label variable finance_neg "Egotropic (-)"
label variable finance_pos "Egotropic (+)"
label variable finance "Egotropic"

****************************** Splined IV: Security ******************************

mkspline security_neg 2.5 security_pos = security
label variable security_neg "Security (-)"
label variable security_pos "Security (+)"
label variable security "Security"

************************* DV: Political Trust ******************************

sum gov_trust parl_trust court_trust

*** Table D1 ***

alpha gov_trust parl_trust court_trust, item std
factor gov_trust parl_trust court_trust, pcf

gen pol_trust = (gov_trust + parl_trust + court_trust)/3


************************* Moderator: Collectivism ******************************

gen coll = 100 - idv

************************* List-wise Deletion ******************************

drop if mi(age, female, married, employed, edu, ideology, pol_trust, gdp_growth, inflation, unemployment, coll, v2x_polyarchy)

label variable age Age
label variable female Female
label variable married Married 
label variable employed Employed 
label variable edu Education
label variable ideology "Ideology"
label variable pol_trust "Political Trust"
label variable v2x_polyarchy "Electoral Democracy Index"
label variable coll "Collectivism"

************************* Rescaling from 0 to 1 ******************************

foreach v of varlist *_trust age ideology coll *_neg *_pos {

sum `v'
replace `v' = (`v' - `r(min)') / (`r(max)'-`r(min)')

}

************************* Summary Statistics, Table B1 ******************************

eststo clear
estpost summarize pol_trust age female married employed edu ideology finance_neg finance_pos security_neg ///
security_pos gdp_growth inflation unemployment coll v2x_polyarchy
esttab using summary_statistics_wvs.rtf,  cell(( ///
count(label(N)fmt(%9.0f)) ///
mean(label(Mean)fmt(%9.2f)) ///
sd(label(S.D.)fmt(%9.2f)) ///
min(label(Minimum)fmt(%9.2f)) ///
max(label(Maximum)fmt(%9.2f)) ///
)) label nonumber nomtitle replace note("Data: World Values Survey")



************************* Main Analysis ******************************

*** Financial Situation as IV ***

eststo clear

eststo m1: mixed pol_trust age female employed i.edu ideology finance_neg finance_pos v2x_polyarchy gdp_growth unemployment inflation || country: || cnty_year:
test finance_neg = finance_pos 
lincom finance_neg - finance_pos

eststo m2: mixed pol_trust age female employed i.edu ideology finance_neg finance_pos v2x_polyarchy gdp_growth unemployment inflation coll c.finance_neg#c.coll c.finance_pos#c.coll || country: || cnty_year: finance_neg finance_pos

predict ri_c1 rs_finance_neg rs_finance_pos ri_cy1, reffects
gen slope_neg = rs_finance_neg + _b[finance_neg] + _b[c.finance_neg#c.coll]*coll
gen slope_pos = rs_finance_pos + _b[finance_pos] + _b[c.finance_pos#c.coll]*coll

*** Figure 1, upper panel ***

margins, dydx(finance_neg) at(coll= (0(0.1)1))  saving(file1, replace)
margins, dydx(finance_pos) at(coll= (0(0.1)1))  saving(file2, replace)

preserve
keep cy coll
duplicates drop

combomarginsplot file1 file2, recast(line) recastci(rline) ciopts(lpattern(dot) lcolor(gray)) ///
ytitle("AME of Splined Perceptions") xtitle ("Collectivism") title("") labels("Negative" "Positive") /// 
addplot(hist coll, percent xscale(r(0 1)) xlabel(0(0.1)1) yscale(r(-0.03 0.15)) ylabel(0(0.05)0.15) ///
xscale(titlegap(small)) yscale(titlegap(small)) /// 
yaxis(2) yscale(axis(2) alt) ylabel(0(10)20, axis(2)) ///
yscale(range(0(10)100) axis(2) ) ytitle("Percent", axis(2)) ) ///
legend(ring(0) pos(1) col(3) size(small) symysize(2) symxsize(8)) title("Egotropic Economic Perceptions") subtitle(" ") 

graph save finance_wvs, replace

restore


*** Figure E2 ***

preserve

keep cy slope_neg slope_pos coll
duplicates drop

twoway (scatter slope_neg coll, xsc(r(0 1)) xlabel(0(0.1)1) msymbol(circle_hollow) mcolor(gray) msize(small) mlabel(cy) mlabsize(tiny)) ///
(lfit slope_neg coll, lcolor(black)), xsc(r(0 1)) xlabel(0(0.1)1) legend(off) title("Negative Perceptions") subtitle(" ") ///
ytitle("AME of Negative Perceptions") xtitle("Collectivism") ///
xscale(titlegap(small)) yscale(titlegap(small)) saving(pos_aggregate, replace)

twoway (scatter slope_pos coll, xsc(r(0 1)) xlabel(0(0.1)1) msymbol(circle_hollow) mcolor(gray) msize(small) mlabel(cy) mlabsize(tiny)) ///
(lfit slope_pos coll, lcolor(black)), xsc(r(0 1)) xlabel(0(0.1)1) legend(off) title("Positive Perceptions") subtitle(" ") ///
ytitle("AME of Positive Perceptions") xtitle("Collectivism") ///
xscale(titlegap(small)) yscale(titlegap(small)) saving(neg_aggregate, replace)

restore

gr combine "neg_aggregate" "pos_aggregate" ,col(1) xsize(4) ysize(6) saving(aggregate, replace)
gr export "finance_agg.png", replace width(2800) height(4200)


*** Security as IV ***

eststo m3: mixed pol_trust age female employed i.edu ideology security_neg security_pos v2x_polyarchy gdp_growth unemployment inflation || country: || cnty_year:
test security_neg = security_pos 
lincom security_neg - security_pos

eststo m4: mixed pol_trust age female employed i.edu ideology security_neg security_pos v2x_polyarchy gdp_growth unemployment inflation coll c.security_neg#c.coll c.security_pos#c.coll || country: || cnty_year: security_neg security_pos 

predict ri_c2 rs_security_neg rs_security_pos ri_cy2, reffects
gen slope_neg2 = rs_security_neg + _b[security_neg] + _b[c.security_neg#c.coll]*coll
gen slope_pos2 = rs_security_pos + _b[security_pos] + _b[c.security_pos#c.coll]*coll

*** Figure 1, lower panel ***

margins, dydx(security_neg) at(coll= (0(0.1)1))  saving(file1, replace)
margins, dydx(security_pos) at(coll= (0(0.1)1))  saving(file2, replace)

preserve
keep cy coll
duplicates drop

combomarginsplot file1 file2, recast(line) recastci(rline) ciopts(lpattern(dot) lcolor(gray)) ///
ytitle("AME of Splined Perceptions") xtitle ("Collectivism") title("") labels("Negative" "Positive") /// 
addplot(hist coll, percent xscale(r(0 1)) xlabel(0(0.1)1) yscale(r(-0.03 0.2)) ylabel(0(0.05)0.2) ///
xscale(titlegap(small)) yscale(titlegap(small)) /// 
yaxis(2) yscale(axis(2) alt) ylabel(0(10)20, axis(2)) ///
yscale(range(0(10)100) axis(2) ) ytitle("% Country-level Obs.", axis(2)) ) ///
legend(ring(0) pos(1) col(3) size(vsmall) symysize(2) symxsize(8)) title("Security Perceptions") subtitle(" ") 

graph save security_wvs, replace

restore

*** Figure E2 ***

preserve

keep cy slope_neg2 slope_pos2 coll
duplicates drop

twoway (scatter slope_neg2 coll, xsc(r(0 1)) xlabel(0(0.1)1) msymbol(circle_hollow) mcolor(gray) msize(small) mlabel(cy) mlabsize(tiny)) ///
(lfit slope_neg2 coll, lcolor(black)), xsc(r(0 1)) xlabel(0(0.1)1) legend(off) title("Negative Perceptions") subtitle(" ") ///
ytitle("AME of Negative Perceptions") xtitle("Collectivism") ///
xscale(titlegap(small)) yscale(titlegap(small)) saving(pos_aggregate, replace)

twoway (scatter slope_pos2 coll, xsc(r(0 1)) xlabel(0(0.1)1) msymbol(circle_hollow) mcolor(gray) msize(small) mlabel(cy) mlabsize(tiny)) ///
(lfit slope_pos2 coll, lcolor(black)), xsc(r(0 1)) xlabel(0(0.1)1) legend(off) title("Positive Perceptions") subtitle(" ") ///
ytitle("AME of Positive Perceptions") xtitle("Collectivism") ///
xscale(titlegap(small)) yscale(titlegap(small)) saving(neg_aggregate, replace)

restore

gr combine "neg_aggregate" "pos_aggregate" ,col(1) xsize(4) ysize(6) saving(aggregate, replace)
gr export "security_agg.png", replace width(2800) height(4200)

*** Figure 1 ***

grc1leg2 "finance_wvs" "security_wvs", col(1) xsize(4) ysize(6) graphregion(margin(tiny))

gr_edit .legend.plotregion1.key[3].draw_view.setstyle, style(no)
gr_edit .legend.plotregion1.label[3].draw_view.setstyle, style(no)
gr_edit .legend.plotregion1.DragBy 0 4.237853149945759

gr export "figure1.png", replace width(2800) height(4200)

*** Table 1 ***

esttab m1 m2 m3 m4 


*********************************************************************************
****************************** Study 2: ABS *************************************
*********************************************************************************

use "ABS_data", clear 


****************************** Splined IV: Sociotropic Economic Perception ******************************

rename eco_soc_retro economy
mkspline eco_neg 3 eco_pos = economy
label variable economy "Sociotropic" 
label variable eco_neg "Sociotropic (-)"
label variable eco_pos "Sociotropic (+)"

****************************** Splined IV: Egotropic Economic Perception ******************************

rename eco_ego_retro finance
mkspline finance_neg 3 finance_pos = finance 
label variable finance "Egotropic" 
label variable finance_neg "Egotropic (-)"
label variable finance_pos "Egotropic (+)"

****************************** Splined IV: Responsiveness ******************************

mkspline respsvns_neg 2.5 respsvns_pos = respsvns
label variable respsvns "Responsiveness"
label variable respsvns_neg "Responsiveness (-)"
label variable respsvns_pos "Responsiveness (+)"

****************************** Splined IV: Anti-corruption Efforts ******************************

rename corrupt_effort corrupt
mkspline corrupt_neg 2.5 corrupt_pos = corrupt
label variable corrupt "Anti-corruption"
label variable corrupt_neg "Anti-corruption (-)"
label variable corrupt_pos "Anti-corruption (+)"

alpha finance economy respsvns corrupt, item std

****************************** DV: Political Trust ******************************

*** Table D3 ***

alpha gov_trust parl_trust court_trust, item std
factor gov_trust parl_trust court_trust, pcf

gen pol_trust = (gov_trust + parl_trust + court_trust)/3

****************************** Moderator: Allocentrism ******************************

*** Table D2 ***

alpha family_interest group_interest nat_interest, std item
factor family_interest group_interest nat_interest, pcf

gen ADS = (family_interest + group_interest + nat_interest)/3


****************************** List-wise Deletion ******************************

drop if mi(age, female, employed, edu, pid, ADS, pol_trust)

label variable pol_trust "Political Trust"
label variable age "Age"
label variable female "Female"
label variable employed "Employed"
label variable edu "Education"
label variable pid "Party ID"
label variable ADS "Allo."

****************************** Rescaling from 0 to 1 ******************************

foreach v of varlist pol_trust ADS *_neg *_pos age edu {
sum `v'
replace `v' = (`v' - `r(min)') / (`r(max)'-`r(min)')
}


****************************** Summary Statistics, Table B2 ******************************

eststo clear

estpost sum pol_trust age female employed edu pid ADS finance_neg finance_pos eco_neg eco_pos respsvns_neg respsvns_pos corrupt_neg corrupt_pos
esttab using "summary_statistics_abs.rtf",  cell(( ///
count(label(N)fmt(%9.0f)) ///
mean(label(Mean)fmt(%9.2f)) ///
sd(label(S.D.)fmt(%9.2f)) ///
min(label(Minimum)fmt(%9.2f)) ///
max(label(Maximum)fmt(%9.2f)) ///
)) label nonumber nomtitle replace note("Data: Asian Barometer Survey")



****************************** Main Analysis ******************************

*** Financial Situation as IV ***

eststo clear

eststo m1: vce2way regress pol_trust age female employed edu i.pid finance_neg finance_pos i.country i.wave, cluster (country wave)
lincom finance_neg - finance_pos 

eststo m2: vce2way regress pol_trust age female employed edu i.pid finance_neg finance_pos ADS c.finance_neg#c.ADS c.finance_pos#c.ADS i.country i.wave, cluster (country wave)

*** Figure 2, upper-left panel *** 

margins, dydx(finance_neg) at(ADS= (0(0.1)1))  saving(file1, replace)
margins, dydx(finance_pos) at(ADS= (0(0.1)1))  saving(file2, replace)

combomarginsplot file1 file2, recast(line) recastci(rline) ciopts(lpattern(dot) lcolor(gray black)) ///
ytitle("AME of Splined Perceptions") xtitle ("Allocentrism") xscale(r(0(0.1)1)) labels("Negative" "Positive" )  ///
addplot(hist ADS, discrete percent xscale(r(0(0.1)1)) xlabel(0(0.1)1) ///
xscale(titlegap(small)) yscale(titlegap(small)) /// 
yaxis(2) yscale(axis(2) alt) ylabel(0(10)30, axis(2)) ///
yscale(range(0(10)100) axis(2) ) ytitle("Percent", axis(2)) ) ///
legend(ring(0) pos(1) col(3) size(vsmall) symysize(2) symxsize(8)) title("Egotropic") subtitle(" ") saving(finance_ADS, replace)


*** Economic Perception as IV ***

eststo m3: vce2way regress pol_trust age female employed edu i.pid eco_neg eco_pos i.country i.wave, cluster (country wave)
lincom eco_neg - eco_pos 

eststo m4: vce2way regress pol_trust age female employed edu i.pid eco_neg eco_pos ADS c.eco_neg#c.ADS c.eco_pos#c.ADS i.country i.wave, cluster (country wave)

*** Figure 2, upper-right panel *** 

margins, dydx(eco_neg) at(ADS= (0(0.1)1))  saving(file1, replace)
margins, dydx(eco_pos) at(ADS= (0(0.1)1))  saving(file2, replace)

combomarginsplot file1 file2, recast(line) recastci(rline) ciopts(lpattern(dot) lcolor(gray black)) ///
ytitle("AME of Splined Perceptions") xtitle ("Allocentrism") xscale(r(0(0.1)1)) labels("Negative" "Positive" )  ///
addplot(hist ADS, discrete percent xscale(r(0(0.1)1)) xlabel(0(0.1)1)  ///
xscale(titlegap(small)) yscale(titlegap(small)) /// 
yaxis(2) yscale(axis(2) alt) ylabel(0(10)30, axis(2)) ///
yscale(range(0(10)100) axis(2) ) ytitle("Percent", axis(2)) ) ///
legend(ring(0) pos(1) col(3) size(vsmall) symysize(2) symxsize(8)) title("Sociotropic") subtitle(" ") saving(eco_ADS, replace)


*** Responsiveness as IV ***

eststo m5: vce2way regress pol_trust age female employed edu i.pid respsvns_neg respsvns_pos i.country i.wave, cluster (country wave)
lincom respsvns_neg - respsvns_pos

eststo m6: vce2way regress pol_trust age female employed edu i.pid respsvns_neg respsvns_pos ADS c.respsvns_neg#c.ADS c.respsvns_pos#c.ADS i.country i.wave, cluster(country wave)

*** Figure 2, lower-left panel *** 

margins, dydx(respsvns_neg) at(ADS= (0(0.1)1))  saving(file1, replace)
margins, dydx(respsvns_pos) at(ADS= (0(0.1)1))  saving(file2, replace)

combomarginsplot file1 file2, recast(line) recastci(rline) ciopts(lpattern(dot) lcolor(gray black)) ///
ytitle("AME of Splined Perceptions") xtitle ("Allocentrism") xscale(r(0(0.1)1)) labels("Negative" "Positive" )  ///
addplot(hist ADS, discrete percent xscale(r(0(0.1)1)) xlabel(0(0.1)1)  ///
xscale(titlegap(small)) yscale(titlegap(small)) /// 
yaxis(2) yscale(axis(2) alt) ylabel(0(10)30, axis(2)) ///
yscale(range(0(10)100) axis(2) ) ytitle("Percent", axis(2)) ) ///
legend(ring(0) pos(1) col(1) size(vsmall) symysize(2) symxsize(8)) title("Responsiveness") subtitle(" ") saving(respsvns_ADS, replace)

*** Anti-corruption effort as IV ***

eststo m7: vce2way regress pol_trust age female employed edu i.pid corrupt_neg corrupt_pos i.country i.wave, cluster (country wave)
lincom corrupt_neg - corrupt_pos

eststo m8: vce2way regress pol_trust age female employed edu i.pid corrupt_neg corrupt_pos ADS c.corrupt_neg#c.ADS c.corrupt_pos#c.ADS i.country i.wave, cluster (country wave)

*** Figure 2, lower-right panel *** 

margins, dydx(corrupt_neg) at(ADS= (0(0.1)1))  saving(file1, replace)
margins, dydx(corrupt_pos) at(ADS= (0(0.1)1))  saving(file2, replace)

combomarginsplot file1 file2, recast(line) recastci(rline) ciopts(lpattern(dot) lcolor(gray black)) ///
ytitle("AME of Splined Perceptions") xtitle ("Allocentrism") xscale(r(0(0.1)1)) labels("Negative" "Positive" )  ///
addplot(hist ADS, discrete percent xscale(r(0(0.1)0)) xlabel(0(0.1)1)  ///
xscale(titlegap(small)) yscale(titlegap(small)) /// 
yaxis(2) yscale(axis(2) alt) ylabel(0(10)30, axis(2)) ///
yscale(range(0(10)100) axis(2) ) ytitle("Percent", axis(2)) ) ///
legend(ring(0) pos(1) col(1) size(vsmall) symysize(2) symxsize(8)) title("Anti-corruption") subtitle(" ") saving(corrupt_ADS, replace)

*** Figure 2, combined ***

grc1leg "finance_ADS" "eco_ADS" "respsvns_ADS" "corrupt_ADS" , col(2) iscale(.6) graphregion(margin(tiny))
gr_edit .legend.plotregion1.key[3].draw_view.setstyle, style(no)
gr_edit .legend.plotregion1.label[3].draw_view.setstyle, style(no)
gr_edit .legend.plotregion1.DragBy 0 4.237853149945759
gr export "figure 2.png", replace width(2400) height(1800)

*** Table 2 ***

esttab m1 m2 m3 m4 m5 m6 m7 m8


****************************** Robustness Checks ******************************

*** Binning Estimation for the Interactions, Figure E3 ***

egen countrywave=group(country wave)
tabulate pid, generate(pid)
gen financeposint = finance_pos*ADS
gen financenegint = finance_neg*ADS
gen ecoposint = eco_pos*ADS
gen econegint = eco_neg*ADS
gen respsvnsposint = respsvns_pos*ADS
gen respsvnsnegint = respsvns_neg*ADS
gen corruptposint = corrupt_pos*ADS
gen corruptnegint = corrupt_neg*ADS

interflex pol_trust finance_neg ADS age female employed edu pid1 pid2 eco_pos ecoposint hk korea mongolia philipines tw thailand indonesia singapore cambodia malaysia myanmar australia india wave3 wave4, cluster(countrywave) dlab("Neg. Perceptions") ylab("Political Trust") xlab(Allocentrism) 
graph save "finance_neg", replace

interflex pol_trust finance_pos ADS age female employed edu pid1 pid2 eco_neg econegint hk korea mongolia philipines tw thailand indonesia singapore cambodia malaysia myanmar australia india wave3 wave4, cluster(countrywave) dlab("Pos. Perceptions") ylab("Political Trust") xlab(Allocentrism) 
graph save "finance_pos", replace

interflex pol_trust eco_neg ADS age female employed edu pid1 pid2 eco_pos ecoposint hk korea mongolia philipines tw thailand indonesia singapore cambodia malaysia myanmar australia india wave3 wave4, cluster(countrywave) dlab("Neg. Perceptions") ylab("Political Trust") xlab(Allocentrism) 
graph save "eco_neg", replace

interflex pol_trust eco_pos ADS age female employed edu pid1 pid2 eco_neg econegint hk korea mongolia philipines tw thailand indonesia singapore cambodia malaysia myanmar australia india wave3 wave4, cluster(countrywave) dlab("Pos. Perceptions") ylab("Political Trust") xlab(Allocentrism) 
graph save "eco_pos", replace

interflex pol_trust respsvns_neg ADS age female employed edu pid1 pid2 respsvns_pos respsvnsposint hk korea mongolia philipines tw thailand indonesia singapore cambodia malaysia myanmar australia india wave3 wave4, cluster(countrywave) dlab("Neg. Perceptions") ylab("Political Trust") xlab(Allocentrism) 
graph save "respsvns_neg", replace

interflex pol_trust respsvns_pos ADS age female employed edu pid1 pid2 respsvns_neg respsvnsnegint hk korea mongolia philipines tw thailand indonesia singapore cambodia malaysia myanmar australia india wave3 wave4, cluster(countrywave) dlab("Pos. Perceptions") ylab("Political Trust") xlab(Allocentrism) 
graph save "respsvns_pos", replace

interflex pol_trust corrupt_neg ADS age female employed edu pid1 pid2 corrupt_pos corruptposint hk korea mongolia philipines tw thailand indonesia singapore cambodia malaysia myanmar australia india wave3 wave4, cluster(countrywave) dlab("Neg. Perceptions") ylab("Political Trust") xlab(Allocentrism) 
graph save "corrupt_neg", replace

interflex pol_trust corrupt_pos ADS age female employed edu pid1 pid2 corrupt_neg corruptnegint hk korea mongolia philipines tw thailand indonesia singapore cambodia malaysia myanmar australia india wave3 wave4, cluster(countrywave) dlab("Pos. Perceptions") ylab("Political Trust") xlab(Allocentrism) 
graph save "corrupt_pos", replace

gr combine "finance_neg" "finance_pos", xsize(2) ysize(1) title("Egotropic") subtitle(" ") saving(finance, replace)
gr combine "eco_neg" "eco_pos", xsize(2) ysize(1) title("Sociotropic") subtitle(" ") saving(eco, replace)
gr combine "respsvns_neg" "respsvns_pos", xsize(2) ysize(1) title("Responsiveness") subtitle(" ") saving(respsvns, replace)
gr combine "corrupt_neg" "corrupt_pos", xsize(2) ysize(1) title("Anti-corruption") subtitle(" ") saving(corrupt, replace)
gr combine "finance" "eco" "respsvns", xsize(2) ysize(3) cols(1) iscale(0.6) graphregion(margin(tiny))
gr export "robustness ABS.png", replace width(1600) height(2400)

*** Jackknife Resampling, Table E1 ***

eststo clear

levelsof iso_abbr, local(x)
foreach v of local x {
eststo `v': vce2way regress pol_trust age female employed edu i.pid finance_neg finance_pos ADS c.finance_neg#c.ADS c.finance_pos#c.ADS i.country i.wave if iso_abbr != "`v'", cluster (country wave)
}

esttab using "ABS_jacknife_finance.rtf", ///
keep (c.finance_neg#c.ADS c.finance_pos#c.ADS)  ///
b(3) se(3) replace mlabels(,titles) label /// 
nogap nonote nostar


eststo clear

levelsof iso_abbr, local(x)
foreach v of local x {
eststo `v': vce2way regress pol_trust age female employed edu i.pid eco_neg eco_pos ADS c.eco_neg#c.ADS c.eco_pos#c.ADS i.country i.wave if iso_abbr != "`v'", cluster (country wave)
}

esttab using "ABS_jacknife_eco.rtf", ///
keep (c.eco_neg#c.ADS c.eco_pos#c.ADS)  ///
b(3) se(3) replace mlabels(,titles) label /// 
nogap nonote nostar

eststo clear

levelsof iso_abbr, local(x)
foreach v of local x {
eststo `v': vce2way regress pol_trust age female employed edu i.pid respsvns_neg respsvns_pos ADS c.respsvns_neg#c.ADS c.respsvns_pos#c.ADS i.country i.wave if iso_abbr != "`v'", cluster (country wave)
}

esttab using "ABS_jacknife_respsvns.rtf", ///
keep (c.respsvns_neg#c.ADS c.respsvns_pos#c.ADS)  ///
b(3) se(3) replace mlabels(,titles) label /// 
nogap nonote nostar

eststo clear

levelsof iso_abbr, local(x)
foreach v of local x {
eststo `v': vce2way regress pol_trust age female employed edu i.pid corrupt_neg corrupt_pos ADS c.corrupt_neg#c.ADS c.corrupt_pos#c.ADS i.country i.wave if iso_abbr != "`v'", cluster (country wave)
}


